<template>
	<view>
		<view class="flex benben-position-layout flex flex-wrap align-center feedback_flex_0"
			:style="{height:(88+StatusBarRpx)+'rpx',paddingTop:StatusBarRpx+'rpx'}">
			<view class='flex flex-wrap align-center justify-between flex-sub feedback_fd0_0'>
				<view class='flex flex-wrap align-center feedback_fd0_0_c0'>
					<person></person>
				</view>
				<text class='feedback_fd0_0_c1'></text>
				<view class='feedback_fd0_0_c2'>
					<!-- <image class='teacherHomepage_fd0_0_c1_c0' mode="aspectFit" src='/static/images/79.png'></image> -->
				</view>
			</view>

		</view>
		<view :style="{height: (88+StatusBarRpx)+'rpx'}"></view>
		<view style="padding: 24rpx 32rpx;background: #fff;position: relative;z-index: 5;">
			<back></back>
		</view>
		<view style="padding: 32rpx;position: relative;z-index: 5;">
			<view class="other_info">
				<view class="other_info_name">
					<text class="other_info_name_1">{{toUser_name}}</text>
					<text class="other_info_name_2">来自：{{authInfos.country}} {{authInfos.city}}</text>
				</view>
				<view class="other_info_phone">
					<image src='/static/images/126.png' mode="aspectFill"></image>
					<text>{{authInfos.mobile}}</text>
				</view>
			</view>
		</view>
		<view class="content" @touchstart="hideDrawer">
			<scroll-view class="msg-list" :style="{ top: (400+StatusBarRpx)+'rpx'}" scroll-y="true"
				:scroll-with-animation="scrollAnimation" :scroll-top="scrollTop" :scroll-into-view="'k-'+scrollToView"
				@scrolltoupper="loadHistory" upper-threshold="50">
				<!-- 加载历史数据waitingUI -->
				<!-- <view class="loading">
					<view class="spinner">
						<view class="rect1"></view>
						<view class="rect2"></view>
						<view class="rect3"></view>
						<view class="rect4"></view>
						<view class="rect5"></view>
					</view>
				</view> -->
				<view id="ctnList">
					<view class="row" v-for="(item, index) in msgList" :key="index" :id="'k-'+item.ID">
						<!-- 用户消息 -->

						<block v-if="!isJsonObj(item.payload.data)">
							<!-- 自己发出的消息 -->
							<view class="my" v-if="item.flow == 'out'">
								<!-- 左-消息 -->
								<view class="left">
									<view class="" style="background-color: transparent;
									max-width: 50%;
									border-radius: 10upx;
									padding: 15upx 20upx;
									" v-if="item.payload.data == 'imgs'">
										<image :style="{ width: item.payload.w + 'px', height: item.payload.h + 'px' }"
											@click="prevs(item.payload.description)" :src="item.payload.description"
											mode="aspectFill"></image>
									</view>
									<!-- 文字消息 -->
									<view v-else-if="item.type == TIM.TYPES.MSG_TEXT && !isJsonObj(item.payload.text)" class="bubble">
										<rich-text :nodes="nodesFliter(item.payload.text)"></rich-text>
									</view>

									<!-- 语音消息 -->
									<view v-else-if="item.payload && item.payload.data == 'voice'" class="bubble voice"
										@tap="playVoice(item.payload, index)">
										<image v-if="playMsgid == index" src="/static/img/voice2.gif"
											style="width: 15px;height: 15px;" mode=""></image>
										<image v-else src="/static/img/voice1.png" style="width: 12px;height: 13px;"
											mode=""></image>
										<view class="length" style="font-size: 28rpx;margin-left: 5rpx;">
											{{ item.payload.extension || '00:00' }}
										</view>
									</view>
									<!-- 语音通话 -->
									<view v-if="isJsonObj(item.payload.text)" class="bubble voice">
										<block>
											
											<view class="length" style="font-size: 28rpx;margin-left: 5rpx;">
												<text v-if="JSON.parse(item.payload.text).call_status == 1">已取消</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 2"> 
													<text style="margin-right: 4rpx;">通话时间</text>
													<text>{{JSON.parse(item.payload.text).hours}}</text>
												</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 3">异常中断</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 4">已拒绝</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 5">未响应</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 6">忙线中</text>
												
											</view>
											<image v-if="JSON.parse(item.payload.text).call_type == 1" src="/static/img/yuyin.png" style="width: 17px;height: 17px;transform: translateY(1px);margin-left: 2px;" mode="">
											</image>
											<image v-if="JSON.parse(item.payload.text).call_type == 2" src="/static/img/shipin.png" style="width: 17px;height: 17px;transform: translateY(1px);margin-left: 2px;" mode="">
											</image>
										</block>
									</view>
								</view>
								<!-- 右-头像 -->
								<view class="right">
									<image style="border-radius: 50%;" :src="myUserInfo.head_img"></image>
								</view>
							</view>
							<!-- 别人发出的消息 -->
							<view class="other" v-if="item.flow == 'in'">
								<!-- 左-头像 -->
								<view @tap.stop="goHomeDetails" class="left">
									<image style="border-radius: 50%;" :src="toHead_img"></image>
								</view>
								<!-- 右-用户名称-时间-消息 -->
								<view class="right">
									<!-- <view class="username">
										<view class="time">{{ timeFliter(item.time) }}</view>
									</view> -->
									<view class="username">
										<view class="">{{toUser_name}}</view>
									</view>
									<!-- 文字消息 -->
									<view v-if="item.type == TIM.TYPES.MSG_TEXT && !isJsonObj(item.payload.text)" class="bubble">
										<rich-text :nodes="nodesFliter(item.payload.text)"></rich-text>
									</view>
									<view class="" v-else-if="item.payload.data == 'imgs'" style="background-color: transparent;
									max-width: 50%;
									border-radius: 10upx;
									padding: 15upx 20upx;
									">
										<image @click="prevs(item.payload.description)"
											:style="{ width: item.payload.w + 'px', height: item.payload.h + 'px' }"
											:src="item.payload.description" mode="aspectFill"></image>
									</view>

									<!-- 语音消息 -->
									<view v-else-if="item.payload && item.payload.data == 'voice'" class="bubble voice"
										@tap="playVoice(item.payload, index)">
										<image v-if="playMsgid == index" src="/static/img/voice2.gif"
											style="width: 15px;height: 15px;" mode=""></image>
										<image v-else src="/static/img/voice.png" style="width: 12px;height: 13px;"
											mode=""></image>
										<view class="length" style="font-size: 28rpx;margin-left: 5rpx;">
											{{ item.payload.extension || '00:00' }}
										</view>
									</view>
									
									<!-- 语音和视频通话 -->
									<view v-if="isJsonObj(item.payload.text)" class="bubble voice">
										<block >
											<image v-if="JSON.parse(item.payload.text).call_type == 1" src="/static/img/yuyin2.png" style="width: 17px;height: 17px;transform: translateY(-1px);margin-right: 2px;" mode="">
											</image>
											<image v-if="JSON.parse(item.payload.text).call_type == 2" src="/static/img/shipin2.png" style="width: 17px;height: 17px;transform: translateY(-1px);margin-right: 2px;" mode="">
											</image>
											<view class="length" style="font-size: 28rpx;margin-left: 5rpx;">
												<text v-if="JSON.parse(item.payload.text).call_status == 1">已取消</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 2">
													<text style="margin-right: 4rpx;">通话时间</text>
													<text>{{JSON.parse(item.payload.text).hours}}</text>
												</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 3">异常中断</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 4">已拒绝</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 5">未响应</text>
												<text v-if="JSON.parse(item.payload.text).call_status == 6">忙线中</text>
											</view>
											
										</block>
									</view>
								</view>
							</view>
						</block>
					</view>
					<view :style="{height:keyDownHeight+'px'}"></view>
				</view>

			</scroll-view>
			<!-- <view style="width: 100%;" :style="{'height': ketwordheight + 'px'}">
				
			</view> -->
			<view class="operate">
				<view class="evaluate_btn" @tap.stop="goEvaluate">去评价</view>
				<view v-if="authInfos.is_follow == 0" class="evaluate_btn" @tap.stop="getFollow">关注</view>
				<view class="evaluate_btn" @tap.stop="getReport">举报</view>
				<view class="evaluate_btn" @tap.stop="getHide">拉黑</view>
			</view>
		</view>

		<!-- 抽屉栏 -->
		<view class="popup-layer" :class="popupLayerClass" @touchmove.stop.prevent="discard">
			<!-- 表情 -->
			<swiper class="emoji-swiper" :class="{ hidden: hideEmoji }" indicator-dots="true" duration="150">
				<swiper-item v-for="(page, pid) in emojiList" :key="pid">
					<view v-for="(em, eid) in page" :key="eid" @tap="addEmoji(em)">
						<image mode="widthFix" :src="'/static/img/emoji/' + em.url"></image>
					</view>
				</swiper-item>
			</swiper>
			<!-- 更多功能 相册-拍照-红包 -->
			<view class="more-layer" :class="{ hidden: hideMore }">
				<view class="list">
					<view class="box" @tap="chooseImage">
						<image style="width: 130rpx;height: 130rpx;border-radius: 10rpx;"
							src="../../../static/img/402.png" mode=""></image>
						<view class="" style="width: 100%;text-align: center;color: #666666;margin-top: 10rpx;">图片
						</view>
					</view>
					<view class="box" @tap="camera">
						<image style="width: 130rpx;height: 130rpx;border-radius: 10rpx;"
							src="../../../static/img/403.png" mode=""></image>
						<view class="" style="width: 100%;text-align: center;color: #666666;margin-top: 10rpx;">拍摄
						</view>
					</view>
					
					<!-- <view class="box" @tap="yuyin">
						<image style="width: 130rpx;height: 130rpx;border-radius: 10rpx;"
							src="../../../static/img/404.png" mode=""></image>
						<view class="" style="width: 100%;text-align: center;color: #666666;margin-top: 10rpx;">语音
						</view>
					</view>
					<view class="box" @tap="shipin">
						<image style="width: 130rpx;height: 130rpx;border-radius: 10rpx;"
							src="../../../static/img/405.png" mode=""></image>
						<view class="" style="width: 100%;text-align: center;color: #666666;margin-top: 10rpx;">视频
						</view>
					</view> -->
					
					
					
					<!-- <view class="box" @tap="yuyin">
						<image style="width: 130rpx;height: 130rpx;border-radius: 10rpx;" src="../../../static/images/403.png" mode=""></image>
						<view class="" style="width: 100%;text-align: center;color: #666666;margin-top: 10rpx;">语音</view>
					</view> -->
					<!-- <view class="box" v-if="source == 1" @click="popupShow1658133585886 = true">
						<image style="width: 130rpx;height: 130rpx;border-radius: 10rpx;" src="../../../static/images/401.png" mode=""></image>
						<view class="" style="width: 100%;text-align: center;color: #666666;margin-top: 10rpx;">赠送礼物</view>
					</view> -->
				</view>
			</view>
		</view>
		<!-- 底部输入栏 -->
		<view class="input-box" :style="{bottom: inputBottom + 'px'}" :class="popupLayerClass"
			@touchmove.stop.prevent="discard">
			<!-- H5下不能录音，输入栏布局改动一下 -->
			<!-- #ifndef H5 -->
			<view class="voice">
				<view class="icon" :class="isVoice ? 'jianpan' : 'yuyin'" @tap="switchVoice"></view>
			</view>
			<!-- #endif -->
			<!-- #ifdef H5 -->
			<view class="more" @tap="showMore">
				<view class="icon add"></view>
			</view>
			<!-- #endif -->
			<view class="textbox">
				<view class="voice-mode" :class="[isVoice ? '' : 'hidden', recording ? 'recording' : '']"
					@touchstart="voiceBegin" @touchmove.stop.prevent="voiceIng" @touchend="voiceEnd"
					@touchcancel="voiceCancel">
					{{ voiceTis }}
				</view>
				<view class="text-mode" :class="isVoice ? 'hidden' : ''">
					<view class="box"><textarea :maxlength="100" auto-height="true" v-model="textMsg" @focus="textareaFocus" /></view>
					<view class="em" @tap="chooseEmoji">
						<view class="icon biaoqing"></view>
					</view>
				</view>
			</view>
			<!-- #ifndef H5 -->
			<view class="more" @tap="showMore">
				<view class="icon add"></view>
			</view>
			<!-- #endif -->

			<!-- #ifdef H5 -->
			<view class="send" :class="isVoice ? 'hidden' : ''" @tap.stop="sendText">
				<view class="btn">发送</view>
			</view>
			<!-- #endif -->
			<!-- #ifndef H5 -->
			<view class="send" :class="isVoice ? 'hidden' : ''" @touchend.prevent="sendText">
				<view class="btn">发送</view>
			</view>
			<!-- #endif -->
		</view>
		<!-- 录音UI效果 -->
		<view class="record" :class="recording ? '' : 'hidden'">
			<view class="ing" :class="willStop ? 'hidden' : ''">
				<view class="icon luyin2"></view>
			</view>
			<view class="cancel" :class="willStop ? '' : 'hidden'">
				<view class="icon chehui"></view>
			</view>
			<view class="tis" :class="willStop ? 'change' : ''">{{ recordTis }}</view>
		</view>

		<!---评价flex布局结束-->
		<benben-popup v-model="popupShow1664183188768" :mask="true" mode='center'>
			<!---拉黑flex布局开始-->
			<view class="flex flex-direction flex-wrap align-stretch benben-flex-layout dynamicDetails_flex_3">
				<view class='flex flex-direction flex-wrap align-stretch dynamicDetails_fd3_0'>
					<view class='flex flex-direction flex-wrap align-center dynamicDetails_fd3_0_c0'>
						<text class='dynamicDetails_fd3_0_c0_c0'>提示</text>
						<text class='dynamicDetails_fd3_0_c0_c1'>被拉黑的用户无法向你发消息，查看您发布的动态.
							可在“设置—黑名单”中解除拉黑，确认要拉黑ta吗？</text>
					</view>
					<view class='flex flex-wrap align-center dynamicDetails_fd3_0_c1'>
						<button class='flex-sub dynamicDetails_fd3_0_c1_c0'
							@tap.stop="popupShow1664183188768=false">取消</button>
						<button class='flex-sub dynamicDetails_fd3_0_c1_c1' @tap.stop="getBlock">确定</button>
					</view>
				</view>
			</view>
			<!---拉黑flex布局结束-->
		</benben-popup>

		<u-modal v-model="isPermision" :zoom="true" :confirm-text="'立即开启'" :content="'请开启麦克风权限!'" @confirm="confirmPer">
		</u-modal>
		
		<!-- 拉黑 -->
		<u-modal v-model="blockShow" :content="blockContent" :show-cancel-button="true" confirm-color="#6A0002" @confirm="confirmBlock"></u-modal>

		<benben-popup v-model="popupShow165813118169999" :mask="true" mode="center">
			<!---拉黑提示flex布局开始-->
			<view class="flex flex-direction flex-wrap align-center userHomeDetail_flex_7"
				@tap.stop="popupShow165813118169999 = true">
				<text class="userHomeDetail_fd7_0">提示</text>
				<text class="userHomeDetail_fd7_1">{{ statusType.text }}</text>
				<view class="flex flex-wrap align-center userHomeDetail_fd7_2">
					<button class="userHomeDetail_fd7_2_c0" @tap.stop="popupShow165813118169999 = false"
						open-type="contact">再想想</button>
					<button class="userHomeDetail_fd7_2_c1" @tap.stop="getCallBack">去确定</button>
				</view>
			</view>
			<!---拉黑提示flex布局结束-->
		</benben-popup>
		
		
		<benben-popup v-model="popupShow1683681243999" :mask="true" mode='center'>
			<!---男对女举报flex布局开始-->
			<view class="setUp_flex_3">
				<view class="jubao_title">
					你将对 {{toUser_name}} 进行举报
				</view>
				<view class="jubao_tips">
					请输入举报类型
				</view>
				<benben-select-diy ref="showSelectPopup1683681482940"
					class-name='flex flex-direction align-stretch flex' :items.sync="reportType" v-model="report_id"
					default-type="id" default-label="name" :allow-cancel='false' type="radio" :disabled='false'>
					<template v-for='(item,key0) in reportType'>
						<view v-if="item.isSelected" class='flex align-center justify-between flex setUp_fd3_1_c0'
							:key="key0" @tap="$refs.showSelectPopup1683681482940.tapHandle(key0)">
							<text>{{item.name}}</text>
							<image class='setUp_fd3_1_c0_c1' mode="aspectFit" :src='STATIC_URL+"35.png"'></image>
						</view>
						<view v-else class='flex flex setUp_fd3_1_c0' :key="key0"
							@tap="$refs.showSelectPopup1683681482940.tapHandle(key0)">
							<text>{{item.name}}</text>
						</view>
					</template>
				</benben-select-diy>
				<view class="jubao_tips2">
					请输入举报内容
				</view>
				<view class='flex flex-wrap align-center setUp_fd3_2'>
					<view class='flex flex-wrap setUp_fd3_2_c0'>
						<textarea class='flex setUp_input_fd3_2_c0' confirm-type="done" :placeholder="'点击添加备注~'"
							:maxlength="100" placeholder-style="color:rgba(191, 191, 191, 1);font-size:28rpx"
							v-model="fd3_2_c0" />
					</view>
				</view>
				<view class='flex align-center justify-between setUp_fd3_3'>
					<view class="jubao_btn_1" @tap.stop="closeReport">
						取消
					</view>
					<view class="jubao_btn_2" @tap.stop="submitReport">
						确定
					</view>
				</view>
			</view>
			<!---男对女举报flex布局结束-->
		</benben-popup>
		
		
		<!-- 评价 -->
		<benben-popup v-model="evaluateShow" :mask="true" mode='center'>
			<view class='flex flex-direction flex-wrap align-stretch evaluateFemale_fd1_2'>
				<view class='evaluateFemale_fd1_2_c0'>
					<text class='evaluateFemale_fd1_0_c0'>评价</text>
				</view>
				<block v-if="authInfos.sex == 2">
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>颜值</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c1_c0_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click1(starNum)"
									:src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click1(starNum)"
									:src='STATIC_URL+"37.png"'></image>
							</template>
						</view>
					</view>
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>身材</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c2_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c2_c1' @tap="click2(starNum)"
									mode="aspectFit" :src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click2(starNum)"
									:src='STATIC_URL+"37.png"'></image>
							</template>
						</view>
					</view>
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>有趣</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c3_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c2_c1' @tap="click3(starNum)"
									mode="aspectFit" :src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click3(starNum)"
									:src='STATIC_URL+"37.png"'></image>
							</template>
						</view>
					</view>
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>耐心</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c4_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c2_c1' @tap="click4(starNum)"
									mode="aspectFit" :src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click4(starNum)"
									:src='STATIC_URL+"37.png"'></image>
							</template>
						</view>
					</view>
				</block>
				<block v-else>
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>守时</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c5_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c2_c1' @tap="click5(starNum)"
									mode="aspectFit" :src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click5(starNum)"
									:src='STATIC_URL+"37.png"' ></image>
							</template>
						</view>
					</view>
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>清洁</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c6_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c2_c1' @tap="click6(starNum)"
									mode="aspectFit" :src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit"  @tap="click6(starNum)"
									:src='STATIC_URL+"37.png"'></image>
							</template>
						</view>
					</view>
					<view class='flex flex-wrap align-center evaluateFemale_fd1_2_c1_c0'>
						<text class='evaluateFemale_fd1_2_c1_c0_c0'>素质</text>
						<view class='flex flex-wrap align-center'>
							<template v-for="starNum in [1,2,3,4,5]">
								<image v-if="fd1_2_c7_c1 >= starNum" :key="starNum" class='evaluateFemale_star1fd1_2_c2_c1' @tap="click7(starNum)"
									mode="aspectFit" :src='STATIC_URL+"36.png"'></image>
								<image v-else :key="starNum" class='evaluateFemale_star1fd1_2_c1_c0_c1' mode="aspectFit" @tap="click7(starNum)"
									:src='STATIC_URL+"37.png"'></image>
							</template>
						</view>
					</view>
				</block>
				
				<view class='flex align-center justify-between setUp_fd3_3_x'>
					<view class="jubao_btn_1" @tap.stop="closeEvaluate">
						取消
					</view>
					<view class="jubao_btn_2" @tap.stop="submitEvaluate">
						确定
					</view>
				</view>
			</view>
		</benben-popup>
	</view>
</template>
<script>
	// const TUICallKit = uni.requireNativePlugin('TencentCloud-TUICallKit');
	const TUICallKitEvent = uni.requireNativePlugin('globalEvent');
	import {
		mapState
	} from 'vuex';
	import permision from '@/js_sdk/wa-permission/permission.js';
	import back from "@/components/back/index.vue"
	import person from "@/components/person/index.vue"
	export default {
		data() {
			return {
				popupShow165813118169999: false,
				showModal3: false,
				isPermision: false,
				popupShow1664183471620: false,
				popupShow1664183188768: false,
				//TIM变量
				conversationActive: null,
				toUserId: '',
				userInfo: null,
				nextReqMessageID: '',
				count: 15,
				isCompleted: '',
				msgList: [],
				TIM: null,
				//文字消息
				textMsg: '',
				//消息列表
				isHistoryLoading: false,
				scrollAnimation: false,
				scrollTop: 0,
				scrollToView: '',

				msgImgList: [],
				myuid: 0,

				//录音相关参数
				// #ifndef H5
				//H5不能录音
				RECORDER: uni.getRecorderManager(),
				// #endif
				isVoice: false,
				voiceTis: '按住 说话',
				recordTis: '手指上滑 取消发送',
				recording: false,
				willStop: false,
				initPoint: {
					identifier: 0,
					Y: 0
				},
				recordTimer: null,
				recordLength: 0,
				//播放语音相关参数
				AUDIO: uni.createInnerAudioContext(),
				playMsgid: null,
				VoiceTimer: null,
				// 抽屉参数
				popupLayerClass: '',
				// more参数
				hideMore: true,
				//表情定义
				hideEmoji: true,
				emojiList: this.$commen.emojiList,
				//表情图片图床名称 ，由于我上传的第三方图床名称会有改变，所以有此数据来做对应，您实际应用中应该不需要
				onlineEmoji: {
					'100.png': '100.png',
					'101.png': '101.png',
					'102.png': '102.png',
					'102.png': '102.png',
					'104.png': '104.png',
					'105.png': '105.png',
					'106.png': '106.png',
					'107.png': '107.png',
					'108.png': '108.png',
					'109.png': '109.png',
					'110.png': '110.png',
					'111.png': '111.png',
					'112.png': '112.png',
					'113.png': '113.png',
					'114.png': '114.png',
					'115.png': '115.png',
					'116.png': '116.png',
					'117.png': '117.png',
					'118.png': '118.png',
					'119.png': '119.png',
					'120.png': '120.png',
					'121.png': '121.png',
					'122.png': '122.png',
					'123.png': '123.png',
					'124.png': '124.png',
					'125.png': '125.png',
					'126.png': '126.png',
					'127.png': '127.png',
					'128.png': '128.png',
					'129.png': '129.png',
					'130.png': '130.png',
					'131.png': '131.png',
					'132.png': '132.png',
					'133.png': '133.png',
					'134.png': '134.png',
					'135.png': '135.png',
					'136.png': '136.png',
					'137.png': '137.png',
					'138.png': '138.png',
					'139.png': '139.png',
					'140.png': '140.png',
					'141.png': '141.png',
					'142.png': '142.png',
					'143.png': '143.png',
					'144.png': '144.png',
					'145.png': '145.png',
					'146.png': '146.png',
					'147.png': '147.png',
					'148.png': '148.png',
					'149.png': '149.png',
					'150.png': '150.png',
					'151.png': '151.png',
					'152.png': '152.png',
					'153.png': '153.png',
					'154.png': '154.png',
					'155.png': '155.png',
					'156.png': '156.png',
					'157.png': '157.png',
					'158.png': '158.png',
					'159.png': '159.png',
					'160.png': '160.png',
					'161.png': '161.png',
					'162.png': '162.png',
					'163.png': '163.png',
					'164.png': '164.png',
					'165.png': '165.png',
					'166.png': '166.png',
					'167.png': '167.png',
					'168.png': '168.png',
					'169.png': '169.png',
					'170.png': '170.png',
					'171.png': '171.png',
					'172.png': '172.png',
					'173.png': '173.png',
					'174.png': '174.png',
					'175.png': '175.png',
					'176.png': '176.png',
					'177.png': '177.png',
					'178.png': '178.png',
					'179.png': '179.png',
					'180.png': '180.png',
					'181.png': '181.png',
					'182.png': '182.png',
					'183.png': '183.png',
					'184.png': '184.png',
					'185.png': '185.png',
					'186.png': '186.png',
					'187.png': '187.png',
					'188.png': '188.png',
					'189.png': '189.png',
					'190.png': '190.png',
					'191.png': '191.png',
					'192.png': '192.png',
					'193.png': '193.png',
					'194.png': '194.png',
					'195.png': '195.png',
					'196.png': '196.png',
					'197.png': '197.png',
					'198.png': '198.png',
					'199.png': '199.png',
				},
				//红包相关参数
				windowsState: '',
				redenvelopeData: {
					rid: null, //红包ID
					from: null,
					face: null,
					blessing: null,
					money: null
				},
				ossObj: uni.getStorageSync('HunXinOss'),
				toHead_img: '', //对方的头像
				toUser_name: '', //对方的名称
				toUserId: '', //对方id
				source: '1', //1 用户  2：客服
				mineInfo: '',
				showModal2: false,
				wechat: '', //微信号
				authInfos: '',
				giftArrList: [], //礼物列表

				value11: 1,
				gifObj: '', //选中的礼物
				showModals: false,
				statusType: '',
				inputBottom: 0,
				keyDownHeight: 0,
				id: "", // 对方的用户id
				isBlack: 0, // 是否加入黑名单  0否  1把对方加入黑名单  2对方把自己加入黑名单
				call_type: '1', // 1 语音 2 视频
				
				// 举报模块
				"reportType": [],
				"report_id": "",
				"fd3_2_c0": "",
				"popupShow1683681243999": false,
				// 拉黑
				"blockShow": false,
				"blockContent": "",
				// 评价
				"evaluateShow": false,
				"fd1_2_c1_c0_c1": 5,
				"fd1_2_c2_c1": 5,
				"fd1_2_c3_c1": 5,
				"fd1_2_c4_c1": 5,
				"fd1_2_c5_c1": 5,
				"fd1_2_c6_c1": 5,
				"fd1_2_c7_c1": 5,
				"sex_type": 1, // 1对女的评价  2对男的评价
			};
		},
		components: {
			back,
			person
		},
		computed: {
			...mapState({
				currentMessageList: state => state.currentMessageList
			}),
			myUserInfo() {
				return this.$store.state.userInfo;
			},
		},
		watch: {
			currentMessageList(newVal, oldVal) {
				const self = this;
				if (newVal.length > 0) {
					for (var i = 0; i < newVal.length; i++) {
						if (newVal[i].payload) {
							if (newVal[i].payload.data && newVal[i].payload.data == 'imgs') {
								var url = newVal[i].payload.description;
								var index = i;
								uni.getImageInfo({
									src: url,
									success: image => {
										var obj = {
											w: image.width,
											h: image.height,
											url: url
										};
										if (newVal[index].payload) {
											newVal[index].payload.w = self.setPicSize(obj).w;
											newVal[index].payload.h = self.setPicSize(obj).h;
										}
									}
								});
								// console.log(newVal[index]);
							}
						}
					}
				}
				this.msgList = newVal;
				console.log('watch=====currentMessageList', this.msgList);
				this.screenMsg(newVal, oldVal);
				// if (this.msgList[0].payload.data) {
				// 	// console.log(JSON.parse(JSON.parse(this.msgList[0].payload.data).data))
				// 	console.log(this.msgList[0].payload.data)
				// }
			},
			keyDownHeight(n, o) {
				this.$nextTick(() => {
					this.scrollDom = uni.createSelectorQuery()
					this.scrollDom.select("#ctnList").boundingClientRect(res => {
						this.scrollTop = res.height;
					}).exec();
				})
			},
			// msgList() {
			// 	this.$nextTick(() => {
			// 		this.scrollDom = uni.createSelectorQuery()
			// 		this.scrollDom.select("#ctnList").boundingClientRect(res => {
			// 			this.scrollTop = res.height;
			// 		}).exec();
			// 	})
			// }
		},
		onLoad(option) {
			// console.log(this.myUserInfo.t_user_id);
			if (option.id) {
				this.id = option.id;
			}
			// if (option.source) {
			// 	this.source = option.source;
			// 	if (this.source == 2) {
			// 		let webView = this.$mp.page.$getAppWebview();
			// 		webView.setTitleNViewButtonStyle(0, {
			// 			width: '0'
			// 		});
			// 		webView.setTitleNViewButtonStyle(1, {
			// 			width: '0'
			// 		});
			// 	}
			// }
			this.conversationActive = this.$store.state.conversationActive;
			this.TIM = this.$TIM;

			//语音自然播放结束
			this.AUDIO.onEnded(res => {
				this.playMsgid = null;
			});
			// #ifndef H5
			//录音开始事件
			this.RECORDER.onStart(e => {
				console.log(e);
				this.recordBegin(e);
			});
			//录音结束事件
			this.RECORDER.onStop(e => {
				console.log(e);
				this.recordEnd(e);
			});
			this.RECORDER.onError(e => {
				console.log(e);
			})
			// #endif

			uni.onKeyboardHeightChange(res => {
				//res.height  键盘的高度
				// console.log(res.height);
				// this.ketwordheight = res.height;
				if (res.height > 0) {
					this.inputBottom = 10;
				} else {
					this.inputBottom = 0;
					this.keyDownHeight = 0;
				}
			})
			this.getAuthInfo();

			// 监听备注名字修改
			uni.$on('getRemark', res => {
				this.getFriendsInfo();
			})
			// 清空会话内容
			uni.$on('delNews', res => {
				this.getAuthInfo();
			})
		},
		onShow() {
			setTimeout(() => {
				this.scrollTop = 9999999;
			}, 800)
			// #ifdef APP-PLUS
			this.getAuthorization();
			// #endif
		},
		onHide() {
			this.AUDIO.stop();
		},
		onUnload() {
			this.AUDIO.stop();
			//退出页面 将所有的会话内的消息设置为已读
			let promise = this.tim.setMessageRead({
				conversationID: this.conversationActive.conversationID
			});
			promise
				.then(function(imResponse) {
					console.log('全部已读');
					// 已读上报成功
				})
				.catch(function(imError) {
					// 已读上报失败
					console.warn('setMessageRead error:', imError);
				});
			this.$store.commit('getNewsCount', 0);
			uni.$off('getRemark');
			uni.$off('delNews');
		},
		onNavigationBarButtonTap() {
			this.popupShow1658130915792 = true;
		},
		methods: {
			isJsonObj(str) {
				try {
					if (typeof JSON.parse(str) == "object") {
						return true;
					}
				} catch (e) {}
				return false;
			},
			getCallBack() {
				this.popupShow165813118169999 = false;
			},
			async getAuthorization() {
				if (uni.getSystemInfoSync().platform == 'ios') {
					// var flag = await permision.judgeIosPermission('record');
					// if (!flag) {
					// 	this.isPermision = true;
					// }
				} else if (uni.getSystemInfoSync().platform === 'android') {
					var flag = await permision.requestAndroidPermission('android.permission.RECORD_AUDIO');
					if (flag != 1) {
						this.isPermision = true;
					}
				}
			},
			confirmPer() {
				permision.gotoAppPermissionSetting();
			},
			copyss() {
				const self = this;
				uni.setClipboardData({
					data: self.wechat,
					success: () => {
						uni.showToast({
							title: '复制成功',
							mask: true,
							icon: 'none',
							duration: 1500
						});
					}
				});
			},
			//获取对方人用户详情
			getAuthInfo() {
				this.$api.post(global.API_VERSION + '/64366f0e3b620', {
					user_id: this.id
				}).then(res => {
					console.log(res);
					if (res.data.code == 1) {
						this.authInfos = res.data.data;
						this.toHead_img = res.data.data.head_img;
						// this.toUser_name = res.data.data.user_nickname;
						this.toUserId = res.data.data.t_user_id;
						this.$store.commit('createConversationActive', this.toUserId);
						this.getMsgList();
						this.isFriends();
						this.getFriendsInfo();
						this.getReportType();
						
						if (this.authInfos.sex == 1) {
							this.sex_type = 2;
						} else {
							this.sex_type = 1;
						}
					} else {
						this.$message.info(res.data.msg);
					}
				})
			},
			// 获取好友的全量数据
			getFriendsInfo() {
				let _this = this;
				let promise = _this.tim.getFriendProfile({
					userIDList: [_this.toUserId]
				});
				promise.then(function(imResponse) {
					const {
						friendList,
						failureUserIDList
					} = imResponse.data;
					friendList.forEach((friend) => {
						// console.log(friend);
						// Friend 对象
						if (friend.remark) {
							_this.toUser_name = friend.remark;
						} else {
							_this.toUser_name = _this.authInfos.user_nickname;
						}
					});
					// 失败的 userIDList
					failureUserIDList.forEach((item) => {
						const {
							userID,
							code,
							message
						} = item;
						// 如果不是好友
						if (code == 2700) {
							_this.toUser_name = _this.authInfos.user_nickname;
						}
					});
				}).catch(function(imError) {
					console.warn('getFriendProfile error:', imError); // 获取失败
				});
			},
			// 判断是否是好友,如果不是好友直接添加好友
			isFriends() {
				let _this = this;
				const query = {
					userIDList: [_this.toUserId],
					type: _this.TIM.TYPES.SNS_CHECK_TYPE_SINGLE,
				}
				let promise = _this.tim.checkFriend(query);
				promise.then(function(imResponse) {
					const {
						successUserIDList,
						failureUserIDList
					} = imResponse.data;
					// 校验成功的 userIDList
					successUserIDList.forEach((item) => {
						const {
							userID,
							code,
							relation
						} = item; // 此时 code 始终为0
						// console.log(item);
						// 单向校验好友关系时可能的结果有：
						// - relation: TIM.TYPES.SNS_TYPE_NO_RELATION A 的好友表中没有 B，但无法确定 B 的好友表中是否有 A
						// - relation: TIM.TYPES.SNS_TYPE_A_WITH_B A 的好友表中有 B，但无法确定 B 的好友表中是否有 A
						// 双向校验好友关系时可能的结果有：
						// - relation: TIM.TYPES.SNS_TYPE_NO_RELATION A 的好友表中没有 B，B 的好友表中也没有 A
						// - relation: TIM.TYPES.SNS_TYPE_A_WITH_B A 的好友表中有 B，但 B 的好友表中没有 A
						// - relation: TIM.TYPES.SNS_TYPE_B_WITH_A A 的好友表中没有 B，但 B 的好友表中有 A
						// - relation: TIM.TYPES.SNS_TYPE_BOTH_WAY A 的好友表中有 B，B 的好友表中也有 A

						if (relation == 'CheckResult_Type_NoRelation') {
							let promises = _this.tim.getBlacklist();
							promises.then(function(imResponse) {
								// console.log(imResponse.data); // 我的黑名单列表，结构为包含用户 userID 的数组 - [userID]
								let index = (imResponse.data).indexOf(_this.toUserId);
								if (index == -1) {
									_this.addFriends();
									_this.isBlack = 0;
								} else {
									_this.isBlack = 1;
								}
							}).catch(function(imError) {
								console.warn('getBlacklist error:', imError); // 获取黑名单列表失败的相关信息
							});

						}
					});
					// 校验失败的 userIDList
					failureUserIDList.forEach((item) => {
						const {
							userID,
							code,
							message
						} = item;
						console.log(item);
					});
				}).catch(function(imError) {
					console.warn('checkFriend error:', imError);
				});
			},
			// 添加好友
			addFriends() {
				let _this = this;
				let promise = _this.tim.addFriend({
					to: _this.toUserId,
					source: 'AddSource_Type_Web',
					remark: '',
					groupName: '',
					wording: '',
					type: _this.TIM.TYPES.SNS_ADD_TYPE_BOTH,
				});
				promise.then(function(imResponse) {
					console.log(imResponse)
					// 添加好友的请求发送成功
					const {
						code
					} = imResponse.data;
					if (code === 30539) {
						// 30539 说明 user1 设置了【需要经过自己确认对方才能添加自己为好友】，此时 SDK 会触发 TIM.EVENT.FRIEND_APPLICATION_LIST_UPDATED 事件
					} else if (code === 0) {
						// 0 说明 user1 设置了【允许任何人添加自己为好友】，此时 SDK 会触发 TIM.EVENT.FRIEND_LIST_UPDATED 事件
					}
				}).catch(function(imError) {
					// console.log('addFriend error:', imError.code); // 添加好友失败的相关信息
					// 对方把自己加入黑名单
					if (imError.code == 30525) {
						_this.isBlack = 2;
					}
				});
			},
			// 去评价
			goEvaluate() {
				this.evaluateShow = true;
				// uni.navigateTo({
				// 	url: '/pages/home/evaluateFemale/evaluateFemale?id=' + this.id
				// })
			},
			// 去设置
			goSet() {
				uni.navigateTo({
					url: '/pages/home/setUp/setUp?id=' + this.id + '&toUserId=' + this.toUserId + '&isBlack=' +
						this.isBlack
				})
			},
			// 点击头像跳转用户详情
			goHomeDetails() {
				uni.navigateTo({
					url: '/pages/home/homeDetails/homeDetails?id=' + this.id
				})
			},
			// 举报
			getReport() {
				this.popupShow1683681243999 = true;
				// this.popupShow1664183471620 = false;
				// uni.navigateTo({
				// 	url: '/pages/index/report/report?user_id=' + this.toUserId.slice(10, this.toUserId.length)
				// })
			},
			// 拉黑
			getBlock() {
				// this.$api.post(global.apiUrls.post635291d27cd80, {
				// 	black_user_id: this.toUserId.slice(10, this.toUserId.length)
				// }).then(res => {
				// 	this.$message.info(res.data.msg);
				// 	if (res.data.code == 1) {
				// 		setTimeout(() => {
				// 			uni.navigateBack({
				// 				delta: 1
				// 			})
				// 		}, 800)
				// 	}
				// })
			},
			//隐藏显示
			getHide() {
				this.blockContent = '确认拉黑' + this.toUser_name + '吗？';
				this.blockShow = true;
			},
			confirmBlock() {
				this.$api.post(global.API_VERSION + '/6476ef9c082b2', {
					other_id: this.id
				}).then(res => {
					this.$message.info(res.data.msg);
					if (res.data.code == 1) {
						let promise = this.tim.addToBlacklist({userIDList: [this.toUserId]}); // 请注意：即使只添加一个用户帐号到黑名单，也需要用数组类型，例如：userIDList: ['user1']
						promise.then(function(imResponse) {
						  console.log(imResponse.data); // 被拉黑的全量账号列表，结构为包含用户 userID 的数组 - [userID]
						}).catch(function(imError) {
						  console.warn('addToBlacklist error:', imError); // 添加用户到黑名单列表失败的相关信息
						});
						
						
						this.getAuthInfo();
					}
				})
			},

			prevs(imgs) {
				var arr = [];
				arr.push(imgs);
				uni.previewImage({
					urls: arr
				});
			},
			//聊天的节点加上外层的div
			nodesFliter(str) {
				let nodeStr = '<div style="align-items: center;word-wrap:break-word;">' + str + '</div>';
				return nodeStr;
			},
			//时间过滤
			timeFliter(timer) {
				let timeData = new Date(timer * 1000);
				let str = this.$commen.dateTimeFliter(timeData);
				return str;
			},
			// 接受消息(定位消息)
			screenMsg(newVal, oldVal) {

				if (oldVal && oldVal.length > 0) {
					if (newVal[0].ID && oldVal[0].ID && oldVal) {
						if (newVal[0].ID != oldVal[0].ID && newVal.length >= this.count) {
							this.$nextTick(() => {
								this.scrollToView = oldVal[0].ID;
							});
						} else {
							this.$nextTick(() => {
								this.scrollToView = newVal[newVal.length - 1].ID;
							});
						}
					} else {
						this.$nextTick(() => {
							this.scrollToView = newVal[newVal.length - 1].ID;
						});
					}
				}
			},
			//触发滑动到顶部(加载历史信息记录)
			loadHistory(e) {
				// 更多消息列表
				if (this.isCompleted) {
					return;
				}
				let conversationID = this.conversationActive.conversationID;
				let promise = this.tim.getMessageList({
					conversationID: conversationID,
					nextReqMessageID: this.nextReqMessageID,
					count: this.count
				});
				promise.then(res => {
					// console.log('loadHistoryRes',res);
					let arr = [];
					res.data.messageList.forEach((v, k) => {
						if (v.type == 'TIMCustomElem' && (v.payload.data != 'imgs' || v.payload.data != 'voice')) {
						} else {
							arr.push(v);
						}
					})
					this.$store.commit('unshiftCurrentMessageList', arr);
					this.nextReqMessageID = res.data.nextReqMessageID; // 用于续拉，分页续拉时需传入该字段。
					this.isCompleted = res.data.isCompleted;
				});

				//这段代码很重要，不然每次加载历史数据都会跳到顶部
				setTimeout(() => {
					this.scrollToView = this.nextReqMessageID; //跳转上次的第一行信息位置
					this.scrollAnimation = true; //恢复滚动动画
				}, 200)


				// this.$nextTick(function() {
				// 	this.scrollToView = this.nextReqMessageID; //跳转上次的第一行信息位置
				// 	this.$nextTick(function() {
				// 		this.scrollAnimation = true; //恢复滚动动画
				// 	});
				// });
				// this.isHistoryLoading = false;



				// return;
				// if (this.isHistoryLoading) {
				// 	return;
				// }
				// this.isHistoryLoading = true; //参数作为进入请求标识，防止重复请求
				// this.scrollAnimation = false; //关闭滑动动画
				// let conversationID = this.conversationActive.conversationID;
				// let promise = this.tim.getMessageList({
				// 	conversationID: conversationID,
				// 	nextReqMessageID: this.nextReqMessageID,
				// 	count: this.count
				// });
				// promise.then(res => {
				// 	console.log('获取的数据====', res);
				// 	this.$store.commit('unshiftCurrentMessageList', res.data.messageList);
				// 	this.nextReqMessageID = res.data.nextReqMessageID; // 用于续拉，分页续拉时需传入该字段。
				// 	this.isCompleted = res.data.isCompleted;
				// });
				// //这段代码很重要，不然每次加载历史数据都会跳到顶部
				// this.$nextTick(function() {
				// 	this.scrollToView = this.nextReqMessageID; //跳转上次的第一行信息位置
				// 	this.$nextTick(function() {
				// 		this.scrollAnimation = true; //恢复滚动动画
				// 	});
				// });
				// this.isHistoryLoading = false;
			},
			// 加载初始页面消息
			getMsgList() {
				// 历史消息列表
				let conversationID = this.conversationActive.conversationID;
				let promise = this.tim.getMessageList({
					conversationID: conversationID,
					count: this.count
				});
				promise.then(res => {
					let arr = [];
					res.data.messageList.forEach((v, k) => {
						if (v.type == 'TIMCustomElem' && (v.payload.data != 'imgs' || v.payload.data != 'voice')) {
						} else {
							arr.push(v);
						}
					})
					// console.log(arr);
					this.$store.commit('pushCurrentMessageList', arr);
					this.nextReqMessageID = res.data.nextReqMessageID; // 用于续拉，分页续拉时需传入该字段。
					this.isCompleted = res.data.isCompleted;
					if (arr.length > 0) {
						this.scrollToView = arr[res.data.messageList.length - 1].ID;
					}
					// console.log('isCompleted', this.isCompleted);
					// console.log('getMsgList=============', this.nextReqMessageID);
				});
				// 滚动到底部
				this.$nextTick(function() {
					//进入页面滚动到底部
					this.scrollTop = 99999;
					this.$nextTick(function() {
						this.scrollAnimation = true;
					});
				});
			},
			//处理图片尺寸，如果不处理宽高，新进入页面加载图片时候会闪
			setPicSize(content) {
				// 让图片最长边等于设置的最大长度，短边等比例缩小，图片控件真实改变，区别于aspectFit方式。
				let maxW = uni.upx2px(300); //350是定义消息图片最大宽度
				let maxH = uni.upx2px(300); //350是定义消息图片最大高度
				if (content.w > maxW || content.h > maxH) {
					let scale = content.w / content.h;
					content.w = scale > 1 ? maxW : maxH * scale;
					content.h = scale > 1 ? maxW / scale : maxH;
				}
				return content;
			},
			updatePic(picUrl) {
				const self = this;

				var timestamp = new Date().getTime();
				let str = 'abcdefghijklmnopqrstuvwxyz9876543210';
				let tmp = '',
					i = 0,
					l = str.length;
				for (i = 0; i < 30; i++) {
					tmp += str.charAt(Math.floor(Math.random() * l));
				}
				timestamp = timestamp + tmp;

				let uploadTask = uni.uploadFile({
					url: global.API_BASE_URL + global.API_VERSION + '/6438a7602dbc6',
					filePath: picUrl,
					name: 'file[]',
					formData: {
						dir: 'images'
					},
					// formData: {
					// 	name: timestamp,
					// 	key: self.ossObj.dir + timestamp,
					// 	policy: self.ossObj.policy,
					// 	OSSAccessKeyId: self.ossObj.accessid,
					// 	success_action_status: '200', //让服务端返回200,不然，默认会返回204
					// 	signature: self.ossObj.signature
					// },
					success: res => {
						console.log(res);
						uni.hideLoading();
						if (res.statusCode == '200') {
							// var urls = self.ossObj.host + self.ossObj.dir + timestamp;
							var urls = JSON.parse(res.data).data[0].path;
							self.sendMsg(urls, 'img', 0);
						} else {
							// uni.showToast({
							// 	title: '上传失败',
							// 	mask: true,
							// 	icon: 'none',
							// 	duration: 1500
							// });
						}
					},
					fail: err => {}
				});
			},
			//更多功能(点击+弹出)
			showMore() {
				if (this.statusType.status === 0) {
					// 赠送多少礼物才可以聊天
					this.popupShow165813118169999 = true;
					return;
				} else if (this.statusType.status === -2) {
					uni.showToast({
						title: this.statusType.text,
						mask: true,
						icon: 'none'
					});
					return;
				} else {
					this.isVoice = false;
					this.hideEmoji = true;
					if (this.hideMore) {
						this.hideMore = false;
						this.openDrawer();
					} else {
						this.hideDrawer();
					}
				}
			},
			// 打开抽屉
			openDrawer() {
				this.popupLayerClass = 'showLayer';
			},
			// 隐藏抽屉
			hideDrawer() {
				this.popupLayerClass = '';
				setTimeout(() => {
					this.hideMore = true;
					this.hideEmoji = true;
				}, 150);
			},
			// 选择图片发送
			chooseImage() {
				this.getImage('album');
			},
			//拍照发送
			camera() {
				this.getImage('camera');
			},
			yuyin() {
				if (this.isBlack == 1) {
					this.$message.info('此用户已加入黑名单，无法拨打语音');
					return;
				}
				if (this.isBlack == 2) {
					this.$message.info('对方已把你加入黑名单，无法拨打语音');
					return;
				}
				const options = {
					userID: this.toUserId,
					callMediaType: 1, // 语音通话(callMediaType = 1)、视频通话(callMediaType = 2)
				};
				this.TUICallKit.call(options, (res) => {
					if (res.code === 0) {
						console.log('call success');
						this.call_type = 1;
						this.listenTUICallKit();
					} else {
						console.log(`call failed, error message = ${res.msg}`);
					}
				});
			},
			shipin() {
				if (this.isBlack == 1) {
					this.$message.info('此用户已加入黑名单，无法拨打视频');
					return;
				}
				if (this.isBlack == 2) {
					this.$message.info('对方已把你加入黑名单，无法拨打视频');
					return;
				}
				const options = {
					userID: this.toUserId,
					callMediaType: 2, // 语音通话(callMediaType = 1)、视频通话(callMediaType = 2)
				};
				this.TUICallKit.call(options, (res) => {
					if (res.code === 0) {
						console.log('call success');
						this.call_type = 2;
						this.listenTUICallKit();
					} else {
						console.log(`call failed, error message = ${res.msg}`);
					}
				});
			},
			// 监听语音和视频状态
			listenTUICallKit() {
				let _this = this;
				let call_status = ''; // 通话状态
				let hours = 0;
				// 通话取消回调, 1主动取消  2正常通话结束  3异常错误中断  4对方拒绝通话  5对方未响应  6 忙线中
				TUICallKitEvent.addEventListener('onCallCancelled', (res) => {
					// if (call_status == 4) {
					// 	call_status = 4
					// } else {
					// 	call_status = 1;
					// }
					console.log('onCallCancelled', res.callerId);
					if (_this.myUserInfo.t_user_id == res.callerId) {
						if (call_status == 2 || call_status == 3 || call_status == 4 || call_status == 5 || call_status == 6) {
							return;
						}
						call_status = 1;
						_this.sendCustom(call_status, hours);
					}
				});
				
				TUICallKitEvent.addEventListener('onCallEnd', (res) => {
					call_status = 2;
					console.log('onCallEnd', res.totalTime);
					let min = parseInt(res.totalTime / 60);
					let sec = res.totalTime % 60;
					min = min < 10 ? '0' + min : min;
					sec = sec < 10 ? '0' + sec : sec;
					hours = min + ':' + sec;
					_this.sendCustom(call_status, hours);
					TUICallKitEvent.removeEventListener('onCallEnd');
					TUICallKitEvent.removeEventListener('onCallCancelled');
				});
				
				TUICallKitEvent.addEventListener('onError', (res) => {
					console.log('onError', res)
					call_status = 3;
					_this.sendCustom(call_status, hours);
					TUICallKitEvent.removeEventListener('onError');
					TUICallKitEvent.removeEventListener('onCallCancelled');
				});
				
				TUICallKitEvent.addEventListener('onUserReject', (res) => {
					console.log('onUserReject', res)
					call_status = 4;
					_this.sendCustom(call_status, hours);
					TUICallKitEvent.removeEventListener('onUserReject');
					TUICallKitEvent.removeEventListener('onCallCancelled');
				});
				TUICallKitEvent.addEventListener('onCallMediaTypeChanged', (res) => {
				  console.log('onCallMediaTypeChanged', res);
				  if (res.newCallMediaType == 'Audio') {
					  _this.call_type = 1;
				  } else if (res.newCallMediaType == 'Video') {
					  _this.call_type = 2;
				  }
				});
				TUICallKitEvent.addEventListener('onUserNoResponse', (res) => {
				  console.log('onUserNoResponse', JSON.stringify(res));
				  call_status = 5;
				  _this.sendCustom(call_status, hours);
				  TUICallKitEvent.removeEventListener('onUserNoResponse');
				  TUICallKitEvent.removeEventListener('onCallCancelled');
				});
				TUICallingEvent.addEventListener('onUserLineBusy', (res) => {
				  console.log('onUserLineBusy', JSON.stringify(res));
				  call_status = 6;
				  _this.sendCustom(call_status, hours);
				  TUICallKitEvent.removeEventListener('onUserLineBusy');
				  TUICallKitEvent.removeEventListener('onCallCancelled');
				});



			},
			// 语音和视频自定义消息
			sendCustom(call_status, hours) {
				TUICallKitEvent.removeEventListener('onCallMediaTypeChanged');
				let _this = this;
				// console.log(call_status)
				// console.log(hours)
				let textData = {
					call_type: _this.call_type,
					call_status: call_status,
					hours: hours
				};
				let message = '';
				message = this.tim.createTextMessage({
					to: this.toUserId,
					conversationType: 'C2C',
					payload: {
						text: JSON.stringify(textData)
					}
				});
				let pomise = _this.tim.sendMessage(message, {});
				pomise.then(res => {
					_this.$store.commit('pushCurrentMessageList', message);
					setTimeout(() => {
						_this.scrollToView = res.data.message.ID;
					}, 300)
				}).catch(err => {
					if (err.code == 20007) {
						_this.$message.info('对方已把你加入黑名单，发送消息失败');
						return;
					} else {
						_this.$message.info('发送消息失败，请重试');
					}
				});
			},

			//选照片 or 拍照
			getImage(type) {
				this.hideDrawer();
				const self = this;
				uni.chooseImage({
					sourceType: [type],
					count: 1,
					sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
					success: res => {
						console.log(res);
						for (let i = 0; i < res.tempFilePaths.length; i++) {
							if (res.tempFilePaths[i]) {
								self.updatePic(res.tempFilePaths[i]);
							}
						}
					}
				});
			},
			// 选择表情
			chooseEmoji() {
				this.hideMore = true;
				if (this.hideEmoji) {
					this.hideEmoji = false;
					this.openDrawer();
				} else {
					this.hideDrawer();
				}
			},
			//添加表情
			addEmoji(em) {
				this.textMsg += em.alt;
			},

			//获取焦点，如果不是选表情ing,则关闭抽屉
			textareaFocus(r) {
				this.keyDownHeight = r.detail.height;
				this.hideDrawer();
				// console.log(this.keyDownHeight);
				// if (this.popupLayerClass == 'showLayer' && this.hideMore == false) {
				// 	this.hideDrawer();
				// }
			},
			// 发送文字消息
			sendText() {
				console.log('sendText=================', this.statusType);
				if (this.statusType.status === 0) {
					// 赠送多少礼物才可以聊天
					this.popupShow165813118169999 = true;
					return;
				} else if (this.statusType.status === -2) {
					uni.showToast({
						title: this.statusType.text,
						mask: true,
						icon: 'none'
					});
					return;
				} else {
					this.hideDrawer(); //隐藏抽屉
					if (!this.textMsg) {
						return;
					}

					let content = this.replaceEmoji(this.textMsg);
					let msg = {
						text: content
					};
					this.sendMsg(msg, 'text', 0);
					this.textMsg = ''; //清空输入框
				}
			},
			//替换表情符号为图片
			replaceEmoji(str) {
				let replacedStr = str.replace(/\[([^(\]|\[)]*)\]/g, (item, index) => {
					console.log('item: ' + item);
					for (let i = 0; i < this.emojiList.length; i++) {
						let row = this.emojiList[i];
						for (let j = 0; j < row.length; j++) {
							let EM = row[j];
							if (EM.alt == item) {
								//在线表情路径，图文混排必须使用网络路径，请上传一份表情到你的服务器后再替换此路径
								//比如你上传服务器后，你的100.gif路径为https://www.xxx.com/emoji/100.gif 则替换onlinePath填写为https://www.xxx.com/emoji/
								// let onlinePath = 'https://s2.ax1x.com/2019/04/12/';
								let onlinePath = 'http://showme.niurenjianzhan.com/uploads/emoji/';
								let imgstr =
									'<img style="width:24px;height:24px;transform:translateY(-2px);vertical-align: middle;" src="' +
									onlinePath + this.onlineEmoji[EM.url] + '">';
								// console.log('imgstr: ' + imgstr);
								return imgstr;
							}
						}
					}
				});
				return replacedStr;
			},

			// 发送消息
			sendMsg(content, type, hours) {
				console.log('1111111111111', content, type, hours);

				var message = '';
				let is_type = '';
				if (type == 'text') {
					//发送文字
					message = this.tim.createTextMessage({
						to: this.toUserId,
						conversationType: 'C2C',
						payload: {
							text: content.text
						}
					});
					is_type = content.text;
				} else if (type == 'voice') {
					//发送音频
					message = this.tim.createCustomMessage({
						to: this.toUserId,
						conversationType: 'C2C',
						payload: {
							data: 'voice', // 用于标识该消息是骰子类型消息
							description: content, // 获取骰子点数
							extension: hours
						}
					});
					is_type = '语音';
				} else if (type == 'img') {
					//发送图片
					message = this.tim.createCustomMessage({
						to: this.toUserId,
						conversationType: 'C2C',
						payload: {
							data: 'imgs', // 用于标识该消息是骰子类型消息
							description: content // 获取骰子点数
						}
					});
					is_type = '图片';
				}


				let pomise = this.tim.sendMessage(message, {
					// offlinePushInfo: {
					// 	title: '方向', // 离线推送标题
					// 	description: is_type, // 离线推送内容
					// 	androidOPPOChannelID: '', // 离线推送设置 OPPO 手机 8.0 系统及以上的渠道 ID
					// 	extension: JSON.stringify({
					// 		entity: { // entity 中的内容可自定义
					// 			nick: '',
					// 			userID: '',
					// 		}
					// 	})
					// }
				});
				pomise.then(res => {
					this.$store.commit('pushCurrentMessageList', message);
					// this.$nextTick(() => {
					// 	// 滚动到底
					// 	this.scrollToView = res.data.message.ID;
					// });
					setTimeout(() => {
						this.scrollToView = res.data.message.ID;
					}, 300)
					// setTimeout(() => {
					// 	this.scrollTop = 0;
					// }, 800)
				}).catch(err => {
					// console.log(err.code);
					if (err.code == 20007) {
						this.$message.info('对方已把你加入黑名单，发送消息失败');
						return;
					} else {
						this.$message.info('发送消息失败，请重试');
					}
				});
			},

			// 预览图片
			showPic(msg) {
				uni.previewImage({
					indicator: 'none',
					current: msg.content.url,
					urls: this.msgImgList
				});
			},
			// 播放语音
			playVoice(msg, index) {
				if (this.playMsgid) {
					this.AUDIO.stop();
					this.playMsgid = null;
				} else {
					this.playMsgid = index;
					this.AUDIO.src = msg.description;
					this.$nextTick(function() {
						this.AUDIO.play();
					});
				}
			},
			// 录音开始
			voiceBegin(e) {
				console.log(e);
				if (e.touches.length > 1) {
					return;
				}
				this.initPoint.Y = e.touches[0].clientY;
				this.initPoint.identifier = e.touches[0].identifier;
				this.RECORDER.start({
					format: 'mp3'
				}); //录音开始,
			},
			//录音开始UI效果
			recordBegin(e) {
				this.recording = true;
				this.voiceTis = '松开 结束';
				this.recordLength = 0;
				this.recordTimer = setInterval(() => {
					this.recordLength++;
				}, 1000);
			},
			// 录音被打断
			voiceCancel() {
				this.recording = false;
				this.voiceTis = '按住 说话';
				this.recordTis = '手指上滑 取消发送';
				this.willStop = true; //不发送录音
				this.RECORDER.stop(); //录音结束
			},
			// 录音中(判断是否触发上滑取消发送)
			voiceIng(e) {
				if (!this.recording) {
					return;
				}
				let touche = e.touches[0];
				//上滑一个导航栏的高度触发上滑取消发送
				if (this.initPoint.Y - touche.clientY >= uni.upx2px(100)) {
					this.willStop = true;
					this.recordTis = '松开手指 取消发送';
				} else {
					this.willStop = false;
					this.recordTis = '手指上滑 取消发送';
				}
			},
			// 结束录音
			voiceEnd(e) {
				if (!this.recording) {
					return;
				}
				this.recording = false;
				this.voiceTis = '按住 说话';
				this.recordTis = '手指上滑 取消发送';
				this.RECORDER.stop(); //录音结束
			},
			//录音结束(回调文件)
			recordEnd(e) {
				console.log(e);
				clearInterval(this.recordTimer);
				if (!this.willStop) {
					// console.log('e录音文件====: ' + e.tempFilePath);

					this.updateRecordEnd(e.tempFilePath);
				} else {
					console.log('取消发送录音');
				}
				this.willStop = false;
			},
			updateRecordEnd(picUrl) {
				const self = this;

				var timestamp = new Date().getTime();
				let str = 'abcdefghijklmnopqrstuvwxyz9876543210';
				let tmp = '',
					i = 0,
					l = str.length;
				for (i = 0; i < 30; i++) {
					tmp += str.charAt(Math.floor(Math.random() * l));
				}
				timestamp = timestamp + tmp;

				let uploadTask = uni.uploadFile({
					// url: self.ossObj.host,
					url: global.API_BASE_URL + global.API_VERSION + '/6438a7602dbc6',
					filePath: picUrl,
					name: 'file[]',
					formData: {
						dir: 'mp3'
					},
					// formData: {
					// 	name: timestamp,
					// 	key: self.ossObj.dir + timestamp,
					// 	policy: self.ossObj.policy,
					// 	OSSAccessKeyId: self.ossObj.accessid,
					// 	success_action_status: '200', //让服务端返回200,不然，默认会返回204
					// 	signature: self.ossObj.signature
					// },
					success: res => {
						console.log(res);
						uni.hideLoading();
						if (res.statusCode == '200') {
							// var urls = self.ossObj.host + self.ossObj.dir + timestamp;
							var urls = JSON.parse(res.data).data[0].path;
							let msg = {
								length: 0,
								url: urls
							};
							let min = parseInt(this.recordLength / 60);
							let sec = self.recordLength % 60;
							min = min < 10 ? '0' + min : min;
							sec = sec < 10 ? '0' + sec : sec;
							msg.length = min + ':' + sec;
							console.log('发送========', msg);
							if (msg.length == '00:00') {
								uni.showToast({
									title: '时间太短了~',
									mask: true,
									icon: 'none',
									duration: 800
								});
								return;
							}
							self.sendMsg(urls, 'voice', msg.length);
						} else {
							// uni.showToast({
							// 	title: '上传失败',
							// 	mask: true,
							// 	icon: 'none',
							// 	duration: 1500
							// });
						}
					},
					fail: err => {}
				});
			},
			// 切换语音/文字输入
			switchVoice() {
				// if (this.statusType.status === 0) {
				// 	// 赠送多少礼物才可以聊天
				// 	this.popupShow165813118169999 = true;
				// 	return;
				// } else if (this.statusType.status === -2) {
				// 	uni.showToast({
				// 		title: this.statusType.text,
				// 		mask: true,
				// 		icon: 'none'
				// 	});
				// 	return;
				// } else {
				// 	this.hideDrawer();
				// 	this.isVoice = this.isVoice ? false : true;
				// }
				this.hideDrawer();
				this.isVoice = this.isVoice ? false : true;
			},
			discard() {
				return;
			},
			// 获取举报类型
			getReportType() {
				this.$api.post(global.API_VERSION + '/6476ef736d2ac', {
					type: this.authInfos.sex == 1 ? 2 : 1
				}).then(res => {
					if (res.data.code == 1) {
						this.reportType = res.data.data;
						if (this.reportType.length > 0) {
							this.report_id = this.reportType[0].id;
						}
					} else {
						this.$message.info(res.data.msg);
					}
				})
			},
			// 提交举报
			submitReport() {
				if (!this.fd3_2_c0) {
					this.$message.info('请输入举报内容');
					return;
				}
				this.popupShow1683681243999 = false;
				this.$api.post(global.API_VERSION + '/6476ef8a811ee', {
					type: this.authInfos.sex == 1 ? 2 : 1,
					type_id: this.report_id,
					other_id: this.id,
					content: this.fd3_2_c0
				}).then(res => {
					this.$message.info(res.data.msg);
					if (res.data.code == 1) {
						this.fd3_2_c0 = '';
						this.report_id = this.reportType[0].id;
					}
				})
			},
			closeReport() {
				this.popupShow1683681243999 = false;
				this.fd3_2_c0 = "";
			},
			// 关注  647322fb760b6
			getFollow() {
				this.$api.post(global.API_VERSION + '/647322fb760b6', {
					user_id: this.id
				}).then(res => {
					this.$message.info(res.data.msg);
					if (res.data.code == 1 || res.data.code == 2) {
						this.getAuthInfo();
					}
				})
			},
			
			
			// 颜值
			click1(e) {
				this.fd1_2_c1_c0_c1 = e;
			},
			// 身材
			click2(e) {
				this.fd1_2_c2_c1 = e;
			},
			// 有趣
			click3(e) {
				this.fd1_2_c3_c1 = e;
			},
			// 耐心
			click4(e) {
				this.fd1_2_c4_c1 = e;
			},
			// 守时
			click5(e) {
				this.fd1_2_c5_c1 = e;
			},
			// 清洁
			click6(e) {
				this.fd1_2_c6_c1 = e;
			},
			// 素质
			click7(e) {
				this.fd1_2_c7_c1 = e;
			},
			// 提交评价
			submitEvaluate() {
				this.$api.post(global.API_VERSION + '/6476ef49b4cac', {
					type: this.sex_type,
					other_id: this.id,
					face_stars: this.sex_type == 2 ? 0 : this.fd1_2_c1_c0_c1,
					figure_stars: this.sex_type == 2 ? 0 : this.fd1_2_c2_c1,
					zest_stars: this.sex_type == 2 ? 0 : this.fd1_2_c3_c1,
					patience_stars: this.sex_type == 2 ? 0 : this.fd1_2_c4_c1,
					punctuality_stars: this.sex_type == 1 ? 0 : this.fd1_2_c5_c1,
					clean_stars: this.sex_type == 1 ? 0 : this.fd1_2_c6_c1,
					quality_stars: this.sex_type == 1 ? 0 : this.fd1_2_c7_c1,
				}).then(res => {
					this.$message.info(res.data.msg);
					if (res.data.code == 1) {
						this.evaluateShow = false;
					}
				})
			},
			closeEvaluate() {
				this.evaluateShow = false;
				this.fd1_2_c1_c0_c1 = 5;
				this.fd1_2_c2_c1 = 5;
				this.fd1_2_c3_c1 = 5;
				this.fd1_2_c4_c1 = 5;
				this.fd1_2_c5_c1 = 5;
				this.fd1_2_c6_c1 = 5;
				this.fd1_2_c7_c1 = 5;
			},
		}
	};
</script>
<style lang="scss">
	.jubao_title {
		text-align: center;
		font-size: 34rpx;
		font-weight: bold;
		padding: 40rpx 0 0 0;
	}
	.jubao_tips {
		font-size: 28rpx;
		color: #999;
		margin: 40rpx 0 8rpx 0;
	}
	.jubao_tips2 {
		font-size: 28rpx;
		color: #999;
		margin-bottom: 24rpx;
	}
	.jubao_btn_1 {
		flex: 0.5;
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 32rpx;
		font-weight: 500;
		color: #999999;
	}
	.jubao_btn_2 {
		flex: 0.5;
		display: flex;
		align-items: center;
		justify-content: center;
		font-size: 32rpx;
		font-weight: 500;
		color: #6A0002;
	}
	
	
	.evaluateFemale_star1fd1_2_c2_c1 {
		width: 32rpx;
		height: 32rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		margin: 0rpx 5rpx 0rpx 5rpx;
	}
	
	.evaluateFemale_star1fd1_2_c1_c0_c1 {
		height: 32rpx;
		margin: 0rpx 5rpx 0rpx 5rpx;
		width: 32rpx;
	}
	
	.evaluateFemale_star1fd1_2_c1_c0_c1 {
		width: 32rpx;
		height: 32rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		margin: 0rpx 5rpx 0rpx 5rpx;
	}
	
	.evaluateFemale_fd1_2_c1_c0_c0 {
		margin: 0rpx 16rpx 0rpx 0rpx;
		color: #666666;
		font-size: 28rpx;
		font-weight: 400;
	}
	
	.evaluateFemale_fd1_2_c1_c0 {
		padding: 16rpx 0rpx 16rpx 0rpx;
		margin: 0 auto;
	}
	
	.evaluateFemale_fd1_2_c0 {
		padding: 38rpx 0;
		text-align: center;
	}
	
	.evaluateFemale_fd1_2 {
		// padding: 0rpx 32rpx 0rpx 32rpx;
		width: 580rpx;
		background: #fff;
		border-radius: 16rpx;
	}
	
	.evaluateFemale_fd1_1_c0_c0 {
		width: 160rpx;
		height: 160rpx;
		border-radius: 16rpx 16rpx 16rpx 16rpx;
	}
	
	.evaluateFemale_fd1_1_c0 {
		float: left;
		margin: 0rpx 8rpx 8rpx 8rpx;
		width: 160rpx;
		height: 160rpx;
		border-radius: 16rpx 16rpx 16rpx 16rpx;
	}
	
	.evaluateFemale_fd1_1 {
		border-bottom: 1px solid #eee;
		margin: 0rpx 23rpx 32rpx 23rpx;
		padding: 0rpx 0rpx 32rpx 0rpx;
		overflow: hidden;
	}
	
	.evaluateFemale_fd1_0_c0 {
		color: #333333;
		font-size: 32rpx;
		font-weight: 500;
	}
	
	.evaluateFemale_fd1_0 {
		margin: 0rpx 32rpx 24rpx 32rpx;
	}
	
	
	.setUp_flex_3 {
		background: #fff;
		border-radius: 16rpx;
		background-size: 100% auto !important;
		padding: 0rpx 32rpx 0rpx 32rpx;
		width: 580rpx;
	}
	
	.setUp_fd3_3_c0 {
		background: #6A0002;
		border-radius: 44rpx 44rpx 44rpx 44rpx;
		font-size: 32rpx;
		color: #fff;
		height: 88rpx;
		box-shadow: 0rpx 6rpx 20rpx rgba(19, 163, 141, 0.3);
		line-height: 88rpx;
		width: 638rpx;
	}
	
	.setUp_fd3_3 {
		padding: 24rpx 0;
		margin-top: 16rpx;
	}
	.setUp_fd3_3_x {
		padding: 28rpx 0;
		border-top: 1px solid #eee;
		margin-top: 16rpx;
	}
	
	.setUp_input_fd3_2_c0 {
		width: 100%;
		height: 140rpx;
		font-size: 28rpx;
		font-weight: 400;
		color: #333;
	}
	
	.setUp_fd3_2_c0 {
		background: #F8F8F8;
		width: 100%;
		border-radius: 16rpx 16rpx 16rpx 16rpx;
		padding: 24rpx 24rpx 24rpx 24rpx;
		color: var(--benbenFontColor0);
		font-size: 28rpx;
	}
	
	.setUp_fd3_2 {
		margin: 4rpx 0rpx 0rpx 0rpx;
	}
	
	.setUp_fd3_1_c0_c1 {
		width: 24rpx;
		height: 18rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
	}
	
	.setUp_fd3_1_c0 {
		padding: 18rpx 0rpx 18rpx 0rpx;
	}
	
	.setUp_fd3_0_c2_c0 {
		width: 40rpx;
		height: 40rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
	}
	
	.setUp_fd3_0_c2 {
		width: 200rpx;
	}
	
	.setUp_fd3_0_c1_c0 {
		color: #333333;
		font-size: 32rpx;
		font-weight: 500;
	}
	
	.setUp_fd3_0_c0 {
		width: 200rpx;
		height: 10rpx;
	}
	
	.setUp_fd3_0 {
		padding: 32rpx 0rpx 28rpx 0rpx;
		width: 100%;
	}
	
	
	
	.other_info {
		background: #fff;
		border-radius: 16rpx;
		padding: 32rpx 24rpx;
		.other_info_name {
			display: flex;
			align-items: center;
			.other_info_name_1 {
				font-size: 32rpx;
				font-weight: bold;
				margin-right: 15rpx;
			}
			.other_info_name_2 {
				font-size: 24rpx;
				color: #999;
			}
		}
		.other_info_phone {
			font-size: 28rpx;
			font-weight: bold;
			display: flex;
			align-items: center;
			margin-top: 16rpx;
			image {
				width: 40rpx;
				height: 40rpx;
				margin-right: 6rpx;
			}
		}
	}
	.operate {
		position: absolute;
		bottom: 116rpx;
		left: 32rpx;
		display: flex;
	}
	.evaluate_btn {
		width: 104rpx;
		height: 40rpx;
		background: #FAE5E6;
		border-radius: 8rpx;
		font-size: 20rpx;
		text-align: center;
		line-height: 40rpx;
		color: #6A0002;
		margin-right: 24rpx;
	}

	.feedback_fd0_0 {
		padding: 0rpx 32rpx 0rpx 32rpx;
		height: 88rpx;
	}

	.feedback_fd0_0_c0 {
		width: 135rpx;
		height: 45rpx;
	}

	.feedback_fd0_0_c0_c0 {
		font-size: 36rpx;
		font-weight: 500;
		color: #333;
		line-height: 36rpx;
	}

	.feedback_fd0_0_c1 {
		font-size: 36rpx;
		font-weight: 500;
		color: #333333;
		line-height: 50rpx;
	}

	.feedback_fd0_0_c2 {
		width: 135rpx;
		height: 45rpx;
		text-align: right;
	}

	.teacherHomepage_fd0_0_c1_c0 {
		width: 40rpx;
		height: 40rpx;
	}

	.feedback_fd0_0_c2_c0 {
		line-height: 45rpx;
		font-size: 32rpx;
		font-weight: 500;
		color: #447BF7;
	}

	.feedback_flex_0 {
		border-bottom: 1px solid #eee;
		background: #fff;
		background-size: 100% !important;
		width: 750rpx;
		height: 88rpx;
		overflow: hidden;
		z-index: 10;
		top: 0rpx;
		background-size: 100% auto !important;
	}


	.dynamicDetails_fd3_0 {
		background: #fff;
		background-size: 100% !important;
		border-radius: 25rpx 25rpx 25rpx 25rpx;
		background-size: 100% auto !important;
	}

	.dynamicDetails_fd3_0_c0 {
		border-bottom: 1px solid rgba(238, 238, 238, 1);
		padding: 48rpx 32rpx 40rpx 32rpx;
		border-radius: 25rpx 25rpx 0rpx 0rpx;
	}

	.dynamicDetails_fd3_0_c0_c0 {
		color: #333333;
		font-size: 36rpx;
		font-weight: 500;
		line-height: 50rpx;
	}

	.dynamicDetails_fd3_0_c0_c1 {
		color: #666666;
		font-size: 32rpx;
		font-weight: 500;
		line-height: 40rpx;
		text-align: center;
		margin: 16rpx 0rpx 0rpx 0rpx;
	}

	.dynamicDetails_fd3_0_c1 {
		border-radius: 0rpx 0rpx 25rpx 25rpx;
	}

	.dynamicDetails_fd3_0_c1_c0 {
		border-right: 1px solid rgba(238, 238, 238, 1);
		background: #fff;
		background-size: 100% !important;
		border-radius: 0rpx 0rpx 0rpx 25rpx;
		font-size: 32rpx;
		color: rgba(153, 153, 153, 1);
		height: 94rpx;
		line-height: 94rpx;
	}

	.dynamicDetails_fd3_0_c1_c1 {
		background: #fff;
		background-size: 100% !important;
		border-radius: 0rpx 0rpx 25rpx 0rpx;
		font-size: 32rpx;
		color: rgba(68, 123, 247, 1);
		height: 94rpx;
		line-height: 94rpx;
	}

	.dynamicDetails_flex_3 {
		padding: 0rpx 75rpx 0rpx 75rpx;
	}

	.dynamicDetails_fd5_0 {
		background: #fff;
		background-size: 100% !important;
		border-radius: 24rpx 24rpx 0rpx 0rpx;
		background-size: 100% auto !important;
	}

	.dynamicDetails_fd5_0_c0 {
		margin: 24rpx 32rpx 0rpx 32rpx;
	}

	.dynamicDetails_fd5_0_c0_c0 {
		width: 40rpx;
		height: 40rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
	}

	.dynamicDetails_fd5_0_c1 {
		padding: 0rpx 216rpx 0rpx 216rpx;
		margin: 52rpx 0rpx 0rpx 0rpx;
	}

	.dynamicDetails_fd5_0_c1_c0 {
		margin: 0rpx 0rpx 40rpx 0rpx;
	}

	.dynamicDetails_fd5_0_c1_c0_c0 {
		width: 56rpx;
		height: 56rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		margin: 0rpx 0rpx 8rpx 0rpx;
	}

	.dynamicDetails_fd5_0_c1_c0_c1 {
		color: #333333;
		font-size: 24rpx;
		font-weight: 400;
		line-height: 33rpx;
	}

	.dynamicDetails_fd5_0_c1_c1 {
		margin: 0rpx 0rpx 40rpx 0rpx;
	}

	.dynamicDetails_fd5_0_c1_c1_c0 {
		width: 56rpx;
		height: 56rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		margin: 0rpx 0rpx 8rpx 0rpx;
	}

	.dynamicDetails_fd5_0_c1_c1_c1 {
		color: #333333;
		font-size: 24rpx;
		font-weight: 400;
		line-height: 33rpx;
	}



	.play {}

	.userHomeDetail_fd3_2 {
		border-top: 1px solid #eee;
		padding: 0rpx 0rpx 0rpx 32rpx;
	}

	.userHomeDetail_fd3_2_c0 {
		font-size: 24rpx;
		font-weight: 500;
		color: #333333;
	}

	.userHomeDetail_fd3_2_c1 {
		font-size: 24rpx;
		font-weight: 500;
		color: #333333;
		max-width: 116rpx;
		-webkit-line-clamp: 1;
		overflow: hidden;
		text-overflow: ellipsis;
		display: -webkit-box;
		-webkit-box-orient: vertical;
	}

	.userHomeDetail_fd3_2_c2 {
		font-size: 24rpx;
		font-weight: 500;
		color: #333333;
	}

	.userHomeDetail_fd3_2_c3 {
		margin: 0rpx 0rpx 0rpx 20rpx;
		font-size: 24rpx;
		font-weight: 400;
		color: #538af8;
	}

	::v-deep .userHomeDetail_numberBoxflexfd3_2_c4 {
		margin: 0rpx 10rpx 0rpx auto;
	}

	::v-deep .userHomeDetail_numberBoxInputfd3_2_c4 {
		background: #fff;
		background-size: 100% !important;
		width: 50rpx;
		height: 50rpx;
		text-align: center;
		color: #323232;
		font-size: 28rpx;
	}

	.userHomeDetail_fd3_2_c4_c0 {
		height: 36rpx;
		margin: 0rpx 4rpx 0rpx 4rpx;
		width: 36rpx;
	}

	.userHomeDetail_fd3_2_c4_c2 {
		height: 36rpx;
		margin: 0rpx 4rpx 0rpx 4rpx;
		width: 36rpx;
	}

	.userHomeDetail_fd3_2_c5 {
		border: 1px solid rgba(0, 0, 0, 0);
		background: linear-gradient(140deg, #ff2442 0%, #c81f1f 100%);
		background-size: 100% !important;
		width: 180rpx;
		height: 100rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
	}

	.userHomeDetail_fd3_2_c5_c0 {
		font-size: 32rpx;
		font-weight: 400;
		color: #ffffff;
	}

	.userHomeDetail_fd3_1_c0 {
		width: 20%;
		display: inline-block;
		margin: 10rpx 0rpx 10rpx 0rpx;

		text-align: center;
		padding: 20rpx 5rpx;
		box-sizing: border-box;
		border: 1px solid #ffffff;
		border-radius: 10rpx;
	}

	.activesss {
		border-color: #ff2442;
	}

	.userHomeDetail_fd3_1_c0_c0 {
		width: 90rpx;
		height: 90rpx;
		border-radius: 0rpx 0rpx 0rpx 0rpx;
		margin: 0rpx 0rpx 20rpx 0rpx;
	}

	.userHomeDetail_fd3_1_c0_c1 {
		margin: 0rpx 0rpx 0rpx 0rpx;
		text-align: center;

		display: flex;
		align-items: center;
		justify-content: center;
	}

	.userHomeDetail_fd3_1_c0_c1_c0 {
		line-height: 24rpx;
		font-size: 24rpx;
		font-weight: 400;
		color: #333333;
		max-width: 100rpx;
		-webkit-line-clamp: 1;
		overflow: hidden;
		text-overflow: ellipsis;
		display: -webkit-box;
		-webkit-box-orient: vertical;
	}

	.userHomeDetail_fd3_1_c0_c2 {
		margin: 10rpx 0rpx 0rpx 0rpx;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.userHomeDetail_fd3_1_c0_c2_c0 {
		line-height: 24rpx;
		font-size: 20rpx;
		font-weight: 400;
		color: #ff2442;
	}

	.userHomeDetail_fd3_1_c0_c2_c1 {
		line-height: 24rpx;
		font-size: 20rpx;
		font-weight: 400;
		color: #ff2442;
	}

	.userHomeDetail_fd3_0 {
		padding: 32rpx 32rpx 32rpx 32rpx;
		position: relative;
	}

	.userHomeDetail_fd3_0_c0 {
		background-size: 100% auto !important;
		line-height: 40rpx;
		font-size: 32rpx;
		font-weight: 500;
		color: #333333;
		position: relative;
		z-index: 10;
	}

	.userHomeDetail_fd3_0_c1 {
		background: linear-gradient(180deg, #cfc8ff 0%, #fcfcfe 100%);
		background-size: 100% !important;
		position: absolute;
		width: 144rpx;
		height: 18rpx;
		background-size: 100% auto !important;
		bottom: 30rpx;
		left: 27rpx;
		z-index: 0;
		border-radius: 12rpx 12rpx 0rpx 0rpx;
	}

	.userHomeDetail_fd3_0_c2 {
		font-size: 28rpx;
		font-weight: 400;
		color: rgba(153, 153, 153, 1);
	}

	.userHomeDetail_flex_3 {
		background: #fff;
		background-size: 100% !important;
		background-size: 100% auto !important;
		position: relative;
	}

	.userHomeDetail_flex_7 {
		background: #fff;
		background-size: 100% !important;
		width: 540rpx;
		border-radius: 16rpx 16rpx 16rpx 16rpx;
	}

	.userHomeDetail_fd7_0 {
		font-size: 36rpx;
		font-weight: 700;
		line-height: 32rpx;
		color: #333333;
		margin: 40rpx 0rpx 40rpx 0rpx;
	}

	.userHomeDetail_fd7_1 {
		line-height: 52rpx;
		font-size: 32rpx;
		font-weight: 400;
		color: #333333;
		margin: 0rpx 32rpx 0rpx 32rpx;
		text-align: center;
	}

	.userHomeDetail_fd7_2 {
		margin: 37rpx 0rpx 0rpx 0rpx;
	}

	.userHomeDetail_fd7_2_c0 {
		border-top: 1px solid #eee;
		background: #fff;
		background-size: 100% !important;
		line-height: 110rpx;
		border-radius: 0rpx 0rpx 0rpx 16rpx;
		font-size: 32rpx;
		color: rgba(153, 153, 153, 1);
		font-weight: 700;
		width: 270rpx;
	}

	.userHomeDetail_fd7_2_c1 {
		border-top: 1px solid #eee;
		border-left: 1px solid #eee;
		background: #fff;
		background-size: 100% !important;
		line-height: 110rpx;
		border-radius: 0rpx 0rpx 16rpx 0rpx;
		font-size: 32rpx;
		color: rgba(83, 138, 248, 1);
		font-weight: 700;
		width: 270rpx;
	}

	.userHomeDetail_fd8_1 {
		padding: 32rpx 0rpx 32rpx 0rpx;
	}

	.userHomeDetail_fd8_2 {
		padding: 32rpx 0rpx 32rpx 0rpx;
	}

	.userHomeDetail_fd8_2_c0 {
		font-size: 32rpx;
		font-weight: 400;
		color: rgba(191, 191, 191, 1);
	}

	.userHomeDetail_fd8_1_c0 {
		font-size: 32rpx;
		font-weight: 400;
		color: #333333;
	}

	.userHomeDetail_fd8_0 {
		padding: 32rpx 0rpx 32rpx 0rpx;
	}

	.userHomeDetail_fd8_0_c0 {
		font-size: 32rpx;
		font-weight: 400;
		color: #333333;
	}

	.userHomeDetail_flex_8 {
		background: #fff;
		background-size: 100% !important;
		background-size: 100% auto !important;
		border-radius: 16rpx 16rpx 0rpx 0rpx;
	}

	@import '@/commen/HM-chat/css/style.scss';
</style>